
#ifndef _WINSOCKAPI6_
#define _WINSOCKAPI6_

#define _SS_MAXSIZE 128                 // Maximum size
#define _SS_ALIGNSIZE (sizeof(__int64)) // Desired alignment
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(USHORT))
#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof(USHORT) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
#define ULONG_PTR ULONG

typedef struct in6_addr {
  union {
    UCHAR  Byte[16];
    USHORT Word[8];
  } u;
} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;

/*
typedef struct sockaddr_in6 {
	SHORT		sin6_family;	//  ADDRESS_FAMILY
	USHORT		sin6_port;		// u_short
	ULONG		sin6_flowinfo;
	IN6_ADDR		sin6_addr;
	//union {
		ULONG	sin6_scope_id;
		//SCOPE_ID	sin6_scope_struct;
	//} ;
} SOCKADDR_IN6, *PSOCKADDR_IN6;
*/

typedef struct sockaddr_storage {
  short   ss_family;
  char    __ss_pad1[_SS_PAD1SIZE];
  __int64 __ss_align;
  char    __ss_pad2[_SS_PAD2SIZE];
} SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;



#endif  /* _WINSOCKAPI6_ */